package com.consumer.demo2.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import com.netflix.loadbalancer.RetryRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {


    /**
     * restTemplate 是一种便捷简单的访问restful服务模板类,是Spring提供的用于访问rest服务的客户管模板工具及
     * （url,requestMap,ResponseBean.class）分别代表了rest请求地址，请求参数，HTTP响应转换成的对象类型
     * @return
     */
    @Bean
    /**
     * 开启Ribbon的负载均衡
     */
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }


    /**
     * 定义自己选择的负载均衡算法
     * Ribbon里面已经定义了各种负载均衡算法的类
     * @return
     */
    @Bean
    public IRule myRule(){
//        return new RandomRule();
        return new RetryRule();
    }


}
